<?php

namespace Sisesporte\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="turma")
 * @ORM\Entity(repositoryClass="Sisesporte\Repository\TurmaRepository")
 */
class Turma extends UtilsEntity {

    public function __construct($options = null) {
        Configurator::configure($this, $options);
    }

    /**
     * @var integer $sqTurma
     *
     * @ORM\Column(name="sq_turma", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $sqTurma;

    /**
     * @var string $coTurma
     * @ORM\Column(name="co_turma", type="text", nullable=true)
     */
    protected $coTurma;

    /**
     * @var bigint $nuVaga
     * @ORM\Column(name="nu_vaga", type="bigint", nullable=false)
     */
    protected $nuVaga;

    /**
     * @var datetime $dtCadastro
     * @ORM\Column(name="dt_cadastro", type="datetime", nullable=false)
     */
    protected $dtCadastro;

    /**
     * @var boolean $stAtivo
     * @ORM\Column(name="st_ativo", type="boolean", nullable=true)
     */
    protected $stAtivo;

    /**
     * @var boolean $inPreTeste
     * @ORM\Column(name="in_pre_teste", type="boolean", nullable=true)
     */
    protected $inPreTeste;

    /**
     * @var string $inSemestre
     * @ORM\Column(name="in_semestre", type="text", nullable=true)
     */
    protected $inSemestre;

    /**
     * @var smallint $nuAno
     * @ORM\Column(name="nu_ano", type="smallint", nullable=true)
     */
    protected $nuAno;

    /**
     * @var $sqHorarioInicio
     * @ORM\ManyToOne(targetEntity="Sisesporte\Entity\HorarioFuncionamento", inversedBy="sq_horario")
     * @ORM\JoinColumn(name="sq_horario_inicio", referencedColumnName="sq_horario")
     */
    protected $sqHorarioInicio;

    /**
     * @var $sqHorarioTermino
     * @ORM\ManyToOne(targetEntity="Sisesporte\Entity\HorarioFuncionamento", inversedBy="sq_horario")
     * @ORM\JoinColumn(name="sq_horario_termino", referencedColumnName="sq_horario")
     */
    protected $sqHorarioTermino;

    /**
     * @var $sqTipoFaixaEtaria
     * @ORM\ManyToOne(targetEntity="Sisesporte\Entity\TipoFaixaEtaria", inversedBy="sq_tipo_faixa_etaria")
     * @ORM\JoinColumn(name="sq_tipo_faixa_etaria", referencedColumnName="sq_tipo_faixa_etaria")
     */
    protected $sqTipoFaixaEtaria;

    /**
     * @var $sqNivel
     * @ORM\ManyToOne(targetEntity="Sisesporte\Entity\TipoNivelEquipe", inversedBy="sq_nivel")
     * @ORM\JoinColumn(name="sq_nivel", referencedColumnName="sq_nivel")
     */
    protected $sqNivel;

    /**
     * @var $sqSituacaoTurma
     * @ORM\ManyToOne(targetEntity="Sisesporte\Entity\TipoSituacaoTurma", inversedBy="sq_situacao_turma")
     * @ORM\JoinColumn(name="sq_situacao_turma", referencedColumnName="sq_situacao_turma")
     */
    protected $sqSituacaoTurma;

    /**
     * @var $sqUsuario
     * @ORM\ManyToOne(targetEntity="Sisesporte\Entity\Pessoa", inversedBy="sq_pessoa")
     * @ORM\JoinColumn(name="sq_usuario", referencedColumnName="sq_pessoa")
     */
    protected $sqUsuario;

    /**
     * @var $sqModalidadeProfessor
     * @ORM\ManyToOne(targetEntity="Sisesporte\Entity\ModalidadeProfessor", inversedBy="sq_modalidade_professor")
     * @ORM\JoinColumn(name="sq_modalidade_professor", referencedColumnName="sq_modalidade_professor")
     */
    protected $sqModalidadeProfessor;

    /**
     * @var $sqTurmaDia
     * @ORM\ManyToOne(targetEntity="Sisesporte\Entity\TurmaDia", inversedBy="sq_turma_dia")
     * @ORM\JoinColumn(name="sq_turma_dia", referencedColumnName="sq_turma_dia")
     */
    protected $sqTurmaDia;

    /**
     * @var datetime $dtDivulgacao
     * @ORM\Column(name="dt_divulgacao", type="datetime", nullable=false)
     */
    protected $dtDivulgacao;

    /**
     * @var datetime $dtSorteio
     * @ORM\Column(name="dt_sorteio", type="datetime", nullable=false)
     */
    protected $dtSorteio;

    /**
     * @var datetime $dtFimTeste
     * @ORM\Column(name="dt_fim_teste", type="datetime", nullable=false)
     */
    protected $dtFimTeste;

    /**
     * @var datetime $dtInicioTeste
     * @ORM\Column(name="dt_inicio_teste", type="datetime", nullable=false)
     */
    protected $dtInicioTeste;

    /**
     * @var boolean $inSorteio
     * @ORM\Column(name="in_sorteio", type="boolean", nullable=true)
     */
    protected $inSorteio;

    public function getSqTurma() {
        return $this->sqTurma;
    }

    public function getCoTurma() {
        return $this->coTurma;
    }

    public function setCoTurma($coTurma) {
        $this->coTurma = $coTurma;
        return $this;
    }

    public function getNuVaga() {
        return $this->nuVaga;
    }

    public function setNuVaga($nuVaga) {
        $this->nuVaga = $nuVaga;
        return $this;
    }

    public function getDtCadastro() {
        return $this->formataDateTimeToDate($this->dtCadastro);
    }

    public function setDtCadastro($dtCadastro) {
        $this->dtCadastro = $this->formataDateFromDateTime($dtCadastro);
        return $this;
    }

    public function getStAtivo() {
        return $this->stAtivo;
    }

    public function setStAtivo($stAtivo) {
        $this->stAtivo = $stAtivo;
        return $this;
    }

    public function getInPreTeste() {
        return $this->inPreTeste;
    }

    public function setInPreTeste($inPreTeste) {
        $this->inPreTeste = $inPreTeste;
        return $this;
    }

    public function getInSemestre() {
        return $this->inSemestre;
    }

    public function setInSemestre($inSemestre) {
        $this->inSemestre = $inSemestre;
        return $this;
    }

    public function getNuAno() {
        return $this->nuAno;
    }

    public function setNuAno($nuAno) {
        $this->nuAno = $nuAno;
        return $this;
    }

    public function getSqHorarioInicio() {
        return $this->sqHorarioInicio;
    }

    public function setSqHorarioInicio($sqHorarioInicio) {
        $this->sqHorarioInicio = $sqHorarioInicio;
        return $this;
    }

    public function getSqHorarioTermino() {
        return $this->sqHorarioTermino;
    }

    public function setSqHorarioTermino($sqHorarioTermino) {
        $this->sqHorarioTermino = $sqHorarioTermino;
        return $this;
    }

    public function getSqTipoFaixaEtaria() {
        return $this->sqTipoFaixaEtaria;
    }

    public function setSqTipoFaixaEtaria($sqTipoFaixaEtaria) {
        $this->sqTipoFaixaEtaria = $sqTipoFaixaEtaria;
        return $this;
    }

    public function getSqNivel() {
        return $this->sqNivel;
    }

    public function setSqNivel($sqNivel) {
        $this->sqNivel = $sqNivel;
        return $this;
    }

    public function getSqSituacaoTurma() {
        return $this->sqSituacaoTurma;
    }

    public function setSqSituacaoTurma($sqSituacaoTurma) {
        $this->sqSituacaoTurma = $sqSituacaoTurma;
        return $this;
    }

    public function getSqUsuario() {
        return $this->sqUsuario;
    }

    public function setSqUsuario($sqUsuario) {
        $this->sqUsuario = $sqUsuario;
        return $this;
    }

    public function getSqModalidadeProfessor() {
        return $this->sqModalidadeProfessor;
    }

    public function setSqModalidadeProfessor($sqModalidadeProfessor) {
        $this->sqModalidadeProfessor = $sqModalidadeProfessor;
        return $this;
    }

    public function getSqTurmaDia() {
        return $this->sqTurmaDia;
    }

    public function setSqTurmaDia($sqTurmaDia) {
        $this->sqTurmaDia = $sqTurmaDia;
        return $this;
    }

    public function getDtDivulgacao() {
        return $this->formataDateTimeToDate($this->dtDivulgacao);
    }

    public function setDtDivulgacao($dtDivulgacao) {
        $this->dtDivulgacao = $this->formataDateFromDateTime($dtDivulgacao);
        return $this;
    }

    public function getDtSorteio() {
        return $this->formataDateTimeToDate($this->dtSorteio);
    }

    public function setDtSorteio($dtSorteio) {
        $this->dtSorteio = $this->formataDateFromDateTime($dtSorteio);
        return $this;
    }

    public function getDtFimTeste() {
        return $this->formataDateTimeToDate($this->dtFimTeste);
    }

    public function setDtFimTeste($dtFimTeste) {
        $this->dtFimTeste = $this->formataDateFromDateTime($dtFimTeste);
        return $this;
    }

    public function getDtInicioTeste() {
        return $this->formataDateTimeToDate($this->dtInicioTeste);
    }

    public function setDtInicioTeste($dtInicioTeste) {
        $this->dtInicioTeste = $this->formataDateFromDateTime($dtInicioTeste);
        return $this;
    }

    public function getInSorteio() {
        return $this->inSorteio;
    }

    public function setInSorteio($inSorteio) {
        $this->inSorteio = $inSorteio;
        return $this;
    }

    public function toArray() {
        return array(
            'sqTurma' => $this->getSqTurma(),
            'coTurma' => $this->getCoTurma(),
            'nuVaga' => $this->getNuVaga(),
            'dtCadastro' => $this->getDtCadastro(),
            'stAtivo' => $this->getStAtivo(),
            'inPreTeste' => $this->getInPreTeste(),
            'inSemestre' => $this->getInSemestre(),
            'nuAno' => $this->getNuAno(),
            'sqHorarioInicio' => $this->getSqHorarioInicio(),
            'sqHorarioTermino' => $this->getSqHorarioTermino(),
            'sqTipoFaixaEtaria' => $this->getSqTipoFaixaEtaria(),
            'sqNivel' => $this->getSqNivel(),
            'sqSituacaoTurma' => $this->getSqSituacaoTurma(),
            'sqUsuario' => $this->getSqUsuario(),
            'sqModalidadeProfessor' => $this->getSqModalidadeProfessor(),
            'sqTurmaDia' => $this->getSqTurmaDia(),
            'dtDivulgacao' => $this->getDtDivulgacao(),
            'dtSorteio' => $this->getDtSorteio(),
            'dtFimTeste' => $this->getDtFimTeste(),
            'dtInicioTeste' => $this->getDtInicioTeste(),
            'inSorteio' => $this->getInSorteio(),
            'sqModalidade' => $this->getSqModalidadeProfessor()
        );
    }

}
